package com.laamella.syntherface.synths.alesis.micron.model;

import com.laamella.syntherface.synths.midi.MidiInterface;
import com.laamella.syntherface.synths.models.NrpnParameterModel;
import com.laamella.syntherface.synths.models.ParameterModel;
import com.laamella.syntherface.synths.models.ParameterType;

public class PostFilterMix {
	public final ParameterModel filter1Level;
	public final ParameterModel filter2Level;
	public final ParameterModel preFilterLevel;
	public final ParameterModel filter1Pan;
	public final ParameterModel filter2Pan;
	public final ParameterModel preFilterPan;
	public final ParameterModel preFilterSource;

	public final ParameterModel filter1InvertPhase;

	private static final ParameterType PreFilterSignalTypes = new ParameterType.List("osc 1, osc 2, osc 3, filter 1 mix, filter 2 mix, ringmod, noise");

	public PostFilterMix(MidiInterface midiInterface){
		filter1Level = new NrpnParameterModel("filter 1 level", midiInterface, 54, ParameterType.Percentage, ParameterType.Percentage.maximum);
		filter2Level = new NrpnParameterModel("filter 2 level", midiInterface, 55, ParameterType.Percentage, ParameterType.Percentage.maximum);
		preFilterLevel = new NrpnParameterModel("pre-filter level", midiInterface, 56, ParameterType.Percentage, ParameterType.Percentage.maximum);
		filter1Pan = new NrpnParameterModel("filter 1 pan", midiInterface, 57, ParameterType.PercentageAlsoNegative);
		filter2Pan = new NrpnParameterModel("filter 2 pan", midiInterface, 58, ParameterType.PercentageAlsoNegative);
		preFilterPan = new NrpnParameterModel("pre-filter pan", midiInterface, 59, ParameterType.PercentageAlsoNegative);
		preFilterSource = new NrpnParameterModel("pre-filter source", midiInterface, 60, PreFilterSignalTypes);
		filter1InvertPhase = new NrpnParameterModel("filter 1 invert phase", midiInterface, 61, ParameterType.YesNo);
	}
}
